package com.example.icongyou.bean;

import com.google.gson.annotations.SerializedName;
import java.util.List;
import java.util.Map;

public class PersonalDashboardBean {
    @SerializedName("studentId")
    private Long studentId;

    @SerializedName("studentName")
    private String studentName;

    @SerializedName("totalScore")
    private double totalScore;

    @SerializedName("totalRanking")
    private int totalRanking;

    @SerializedName("totalCourses")
    private int totalCourses;

    @SerializedName("completedCourses")
    private int completedCourses;

    @SerializedName("competencyDimensions")
    private Map<String, Double> competencyDimensions;

    @SerializedName("overallProgress")
    private ProgressInfo overallProgress;

    @SerializedName("courseProgressList")
    private List<CourseProgressItem> courseProgressList;

    // Getters and Setters
    public Long getStudentId() { return studentId; }
    public void setStudentId(Long studentId) { this.studentId = studentId; }
    public String getStudentName() { return studentName; }
    public void setStudentName(String studentName) { this.studentName = studentName; }
    public double getTotalScore() { return totalScore; }
    public void setTotalScore(double totalScore) { this.totalScore = totalScore; }
    public int getTotalRanking() { return totalRanking; }
    public void setTotalRanking(int totalRanking) { this.totalRanking = totalRanking; }
    public int getTotalCourses() { return totalCourses; }
    public void setTotalCourses(int totalCourses) { this.totalCourses = totalCourses; }
    public int getCompletedCourses() { return completedCourses; }
    public void setCompletedCourses(int completedCourses) { this.completedCourses = completedCourses; }
    public Map<String, Double> getCompetencyDimensions() { return competencyDimensions; }
    public void setCompetencyDimensions(Map<String, Double> competencyDimensions) { this.competencyDimensions = competencyDimensions; }
    public ProgressInfo getOverallProgress() { return overallProgress; }
    public void setOverallProgress(ProgressInfo overallProgress) { this.overallProgress = overallProgress; }
    public List<CourseProgressItem> getCourseProgressList() { return courseProgressList; }
    public void setCourseProgressList(List<CourseProgressItem> courseProgressList) { this.courseProgressList = courseProgressList; }

    // 内部类：总体任务进度
    public static class ProgressInfo {
        @SerializedName("totalAssignments")
        private int totalAssignments;

        @SerializedName("completedAssignments")
        private int completedAssignments;

        @SerializedName("inProgressAssignments")
        private int inProgressAssignments;

        @SerializedName("notStartedAssignments")
        private int notStartedAssignments;

        @SerializedName("completionRate")
        private double completionRate;

        // Getters and Setters
        public int getTotalAssignments() { return totalAssignments; }
        public void setTotalAssignments(int totalAssignments) { this.totalAssignments = totalAssignments; }
        public int getCompletedAssignments() { return completedAssignments; }
        public void setCompletedAssignments(int completedAssignments) { this.completedAssignments = completedAssignments; }
        public int getInProgressAssignments() { return inProgressAssignments; }
        public void setInProgressAssignments(int inProgressAssignments) { this.inProgressAssignments = inProgressAssignments; }
        public int getNotStartedAssignments() { return notStartedAssignments; }
        public void setNotStartedAssignments(int notStartedAssignments) { this.notStartedAssignments = notStartedAssignments; }
        public double getCompletionRate() { return completionRate; }
        public void setCompletionRate(double completionRate) { this.completionRate = completionRate; }
    }

    // 内部类：课程进度项
    public static class CourseProgressItem {
        @SerializedName("courseId")
        private Long courseId;

        @SerializedName("courseName")
        private String courseName;

        @SerializedName("score")
        private double score;

        @SerializedName("completionRate")
        private double completionRate;

        @SerializedName("status")
        private String status;

        // Getters and Setters
        public Long getCourseId() { return courseId; }
        public void setCourseId(Long courseId) { this.courseId = courseId; }
        public String getCourseName() { return courseName; }
        public void setCourseName(String courseName) { this.courseName = courseName; }
        public double getScore() { return score; }
        public void setScore(double score) { this.score = score; }
        public double getCompletionRate() { return completionRate; }
        public void setCompletionRate(double completionRate) { this.completionRate = completionRate; }
        public String getStatus() { return status; }
        public void setStatus(String status) { this.status = status; }
    }
}